package cn.icare.cms.model.vo.rest;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单详情对象
 */
@ApiModel(value = "OrderVo", description = "订单详情信息")
public class OrderVo {


    @ApiModelProperty(value = "订单Id")
    private Long id;

    /**
     * 订单编号
     */

    @ApiModelProperty(value = "订单编号")
    private String code;


    /**
     * 订单金额(实付)
     */

    @ApiModelProperty(value = "订单金额(实付)")
    private BigDecimal ammount;

    /**
     * 状态：0、待付款，1、待发货，2、待收货，3、待评价，4、退款中，5、已完成，6、已取消，7、已退款
     */

    @ApiModelProperty(value = "状态：0、待付款，1、待发货，2、待收货，3、待评价，4、退款中，5、已完成，6、已取消，7、已退款")
    private Integer status;


    /**
     * 订单创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("订单创建时间")
    private Date createtime;

    /**
     * 订单原金额
     */
    @ApiModelProperty("订单原金额")
    private BigDecimal sumamount;

    /**
     * 优惠金额
     */
    @ApiModelProperty("订单优惠金额")
    private BigDecimal disamount;


    /**
     * 配送费
     */
    @ApiModelProperty("配送费")
    private BigDecimal expressfee;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String memo;

    /**
     * 配送时间
     */
    @ApiModelProperty("配送时间")
    private String expresstime;

    //订单商品
    @ApiModelProperty("订单商品")
    private List<OrderItemVo> items;

    @ApiModelProperty("收货地址信息")
    private OrderAddressVo orderAddress;


    /**
     * 订单支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("支付时间")
    private Date paytime;

    @ApiModelProperty("支付类型,1-微信 2-支付宝")
    private Integer paytype;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("配送完成时间")
    private Date arrivaltime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public BigDecimal getAmmount() {
        return ammount;
    }

    public void setAmmount(BigDecimal ammount) {
        this.ammount = ammount;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public BigDecimal getSumamount() {
        return sumamount;
    }

    public void setSumamount(BigDecimal sumamount) {
        this.sumamount = sumamount;
    }

    public BigDecimal getDisamount() {
        return disamount;
    }

    public void setDisamount(BigDecimal disamount) {
        this.disamount = disamount;
    }

    public BigDecimal getExpressfee() {
        return expressfee;
    }

    public void setExpressfee(BigDecimal expressfee) {
        this.expressfee = expressfee;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public String getExpresstime() {
        return expresstime;
    }

    public void setExpresstime(String expresstime) {
        this.expresstime = expresstime;
    }

    public List<OrderItemVo> getItems() {
        return items;
    }

    public void setItems(List<OrderItemVo> items) {
        this.items = items;
    }

    public OrderAddressVo getOrderAddress() {
        return orderAddress;
    }

    public void setOrderAddress(OrderAddressVo orderAddress) {
        this.orderAddress = orderAddress;
    }

    public Date getPaytime() {
        return paytime;
    }

    public void setPaytime(Date paytime) {
        this.paytime = paytime;
    }

    public Integer getPaytype() {
        return paytype;
    }

    public void setPaytype(Integer paytype) {
        this.paytype = paytype;
    }

    public Date getArrivaltime() {
        return arrivaltime;
    }

    public void setArrivaltime(Date arrivaltime) {
        this.arrivaltime = arrivaltime;
    }
}
